package com.suanfa.sort.ti;

/**
 * @author jukg
 * @date 2025/01/06 16:06
 * @description
 * 给定一个数组 prices ，它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。
 *
 * 你只能选择 某一天 买入这只股票，并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润
 */
public class MaxProfit {

    public static void main(String[] args) {
        int[] nums = {7,6,4,3,1};
        System.out.println(maxProfit(nums));
    }

    public static int maxProfit(int[] prices) {
        int profit = 0;
        int min = Integer.MAX_VALUE;
        for(int i=0; i< prices.length; i++){
            if(min > prices[i]){
                min = prices[i];
            }else if(prices[i] - min > profit){
                profit = prices[i] - min;
            }
        }

        return profit;
    }

    //timeout
    public static int maxProfit1(int[] prices) {
        int profit = 0;
        if(prices.length > 1){
            int left=0;
            while(left < prices.length){
                int min = prices[left];
                int right = left+1;
                while(right <  prices.length){
                    if(prices[right] > min && prices[right] - min > profit){
                        profit = prices[right] - min;
                    }
                    right++;
                }
                left++;
            }
        }
        return profit;
    }
}
